window.alert = function (message, callback) {
    layer.open({
        content: message,
        yes: function (index, layero) {
            if (callback != null) {
                callback(layero);
            }
            layer.close(index); //如果设定了yes回调，需进行手工关闭
        }
    });
};

/**
 * 服务器请求前缀
 * @type {string}
 */
var baseUrl = "/";

/**
 * 传入JSON序列化参数 POST形式
 * @param url 请求路径
 * @param data 请求JSON数据
 * @param success 成功回调
 * @param error 失败回调
 * @param option 具体配置
 */
function ajaxPostJson(url, data, success, error, option) {
    var opt = option;
    if (opt == null) {
        opt = {async: true, cache: false};
    }
    $.ajax({
        type: "post",
        url: baseUrl + url,
        dataType: "json",
        async: opt.hasOwnProperty("async") ? opt.async : true,
        cache: opt.hasOwnProperty("cache") ? opt.cache : false,
        contentType: 'application/json',
        data: JSON.stringify(data),
        success: function (data) {
            if (data.errorCode == "0") {
                if (success != null) {
                    success(data.result);
                }
            } else {
                if (error != null) {
                    error(data.errorMessage);
                } else {
                    alert(data.errorMessage);
                }
            }
        },
        error: function (e) {
            if (error != null) {
                error(e);
            } else {
                alert("远程服务器没有响应！")
            }
        }
    });
}

/**
 * Ajax请求 普通参数 非JSON传参请求
 * @param url 请求路径
 * @param data 请求JSON数据
 * @param success 成功回调
 * @param error 失败回调
 * @param option 具体配置
 */
function ajaxParams(url, data, success, error, option) {
    var opt = option;
    if (opt == null) {
        opt = {async: true, cache: false, type: "get"};
    }
    $.ajax({
        type: opt.hasOwnProperty("type") ? opt.type : "get",
        url: baseUrl + url,
        async: opt.hasOwnProperty("async") ? opt.async : true,
        cache: opt.hasOwnProperty("cache") ? opt.cache : false,
        data: data,
        success: function (data) {
            if (data.errorCode == "0") {
                if (success != null) {
                    success(data.result);
                }
            } else {
                if (error != null) {
                    error(data.errorMessage);
                } else {
                    alert(data.errorMessage);
                }
            }
        },
        error: function (e) {
            if (error != null) {
                error(e);
            } else {
                alert("远程服务器没有响应！")
            }
        }
    });
}

/**
 * 判断字符串等于空
 * @param str 需要判断的字符串
 * @returns {boolean} true代表为空
 */
function isBlank(str) {
    return str == null || str.length == 0;
}

function isNotBlank(str) {
    return str != null && str.length != 0;
}

/**
 *  动画切换
 * @param start 显示的Dom元素
 * @param end 不显示的Dom元素
 */
function replaceAnim(start, end) {

    $("#" + start).removeClass("layui-anim layui-anim-fadeout");
    $("#" + start).attr("style", "");
    $("#" + end).removeClass("layui-anim layui-anim-fadein");

    $("#" + end).addClass("layui-anim layui-anim-fadeout");
    $("#" + start).addClass("layui-anim layui-anim-fadein");

    $("#" + end).attr("style", "display: none");
}


$.fn.extend({
    getForm: function () {
        var obj = {};
        var array = $(this).serializeArray();
        $.each(array, function () {
            obj[this.name] = this.value;
        });
        return obj;
    },
    setForm: function (jsonValue) {
        var obj = this;
        $.each(jsonValue, function (name, ival) {
            var $oinput = obj.find("input[name='" + name + "']");
            if ($oinput.attr("type") == "radio" || $oinput.attr("type") == "checkbox") {
                $oinput.each(function () {
                    if (Object.prototype.toString.apply(ival) == '[object Array]') {//是复选框，并且是数组
                        for (var i = 0; i < ival.length; i++) {
                            if ($(this).val() == ival[i])
                                $(this).attr("checked", "checked");
                        }
                    } else {
                        if ($(this).val() == ival)
                            $(this).attr("checked", "checked");
                    }
                });
            } else if ($oinput.attr("type") == "textarea") {//多行文本框
                obj.find("[name=" + name + "]").html(ival);
            } else {
                obj.find("[name=" + name + "]").val(ival);
            }
        });
    }
});

/**
 * 获得URL中的参数
 * @param name
 * @returns {*}
 */
function getQueryParam(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var reg_rewrite = new RegExp("(^|/)" + name + "/([^/]*)(/|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    var q = window.location.pathname.substr(1).match(reg_rewrite);
    if (r != null) {
        return unescape(r[2]);
    } else if (q != null) {
        return unescape(q[2]);
    } else {
        return null;
    }
}